#ifndef ALGORITHM_H_
#define ALGORITHM_H_
#include <assert.h>
#include "graph.h"


class Algorithm {
 public:
    virtual void SetupTopology(Graph* graph) = 0;
    // Return an empty path if there is no feasible path for @flow.
    virtual Path FindPath(const Flow& flow) = 0;
    virtual ~Algorithm() {}

 protected:
    Graph* graph_;
};

#endif  // ALGORITHM_H_